home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48_1 / bode_plo < prev    next >
Internet Message Format  |  1995-03-31  |  3KB

  1. From: hernes@ndsuhp.UUCP
  2. Newsgroups: comp.sys.handhelds
  3. Subject: bode plots on the 48
  4. Date: 7 May 90 20:15:45 GMT
  5.  
  6. Hello Networkers,
  7.  
  8. Secondly, I have been working on a few programs for the '48.  Here is a
  9. bode/polar plotter (developed for use in control systems).
  10.  
  11. The hp48sx will plot bode diagrams almost directly from the transfer
  12. Function.  The following automates most of the work for plotting bode
  13. diagrams and polar plots.  Sometimes the Y-scale doesn't make the graph
  14. very clear and then you have to set Y limits manually (or zoom).
  15.  
  16. The programs are as follows:  
  17.  
  18. KEY12.1: this is the program bound to my user "B" key, it sets up a
  19.          temporary menu of:
  20.              { Mag Phase Polar L<-->L TF X.AXIS S }
  21. where
  22.  
  23. Mag:  This program plots the magnitude of F(jw) versus frequency.      
  24.       It takes two numbers from the stack, which are the lower and upper
  25.       'X' limits, then it autoscales the 'Y' axis and plots the bode 
  26.       diagram for the function in 'TF'.
  27.  
  28. Phase: This program plots the phase of F(jw) versus frequency.
  29.        It takes two numbers from the stack, which are the lower and upper
  30.        'X' limits, then it autoscales the 'Y' axis and plots the phase
  31.        vs. freq for 'TF'.
  32.  
  33. Polar: This uses the parametric plotting capabilities of the hp to 
  34.        plot the imaginary part of F(S) versus the real part.
  35.        It also takes two numbers from the stack, which, as expected are
  36.        the lower and upper limits of 'X' which is the independent variable.
  37.  
  38. L<-->L: This toggles the scale of the frequency from log to linear, and
  39.         changes the axis labels appropriately.  This does not affect the
  40.         Polar plotter. L<-->L sets or clears user flag #1 so that it is
  41.         obvious which scale will be plotted.
  42.  
  43. TF:     This variable contains the Transfer Function (in terms of S)
  44.         to be plotted.  It is included in the temporary menu for
  45.     convenience.
  46.  
  47.  
  48. %%HP: T(3)A(D)F(.); 
  49. DIR
  50.   KEY12.1
  51.     \<< { Mag Phase
  52. Polar { "L\<-\->L"
  53. LOG\<-\->LIN } TF
  54.  } TMENU
  55.     \>>
  56.   LOG\<-\->LIN
  57.     \<< xlabels
  58.       IF 1 FS?
  59.       THEN 1 CF 2 '
  60. i*X'
  61.       ELSE 1 SF 1 '
  62. i*ALOG(X)'
  63.       END 'S' STO
  64. GET 'X.AXIS' STO
  65.     \>>
  66.   X.AXIS "j\Gw"
  67.   xlabels {
  68. "LOG(j\Gw)" "j\Gw" }
  69.   Polar
  70.     \<< 'PPAR' PURGE
  71. TF 'EQ' STO S \->
  72. OLDS
  73.       \<< 'i*ALOG(X)'
  74. 'S' STO PARAMETRIC
  75. DUP2 2 \->LIST 'X'
  76. SWAP + INDEP {
  77. (0,\<)0) "RE{G}" "IM{G}" }
  78. AXES SWAP - 100 /
  79. RES ERASE AUTO DRAX
  80. DRAW OLDS 'S' STO
  81.       \>>
  82.     \>>
  83.   Phase
  84.     \<< 'PPAR' PURGE
  85. TF EVAL ARG 'EQ'
  86. STO XRNG (0,\<)0)
  87. X.AXIS "\<)F" 3 \->LIST
  88. AXES ERASE AUTO
  89. DRAX LABEL DRAW
  90.     \>>
  91.   Mag
  92.     \<< 'PPAR' PURGE
  93. TF EVAL ABS 'EQ'
  94. STO XRNG (0,\<)0)
  95. X.AXIS "|F|" 3
  96. \->LIST AXES ERASE
  97. AUTO DRAX LABEL
  98. DRAW
  99.     \>>
  100.   S 'i*X'
  101. END
  102.  
  103.  
  104.